package com.rgc.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.PreparedStatementCreator;
import org.springframework.jdbc.core.support.JdbcDaoSupport;

import com.rgc.domain.Juego;
import com.rgc.domain.Plataforma;

public class PlataformaDaoImpl extends JdbcDaoSupport implements PlataformaDao {

	public List<Plataforma> listPlataforma() {	
		return listPlataforma(new String[]{},new String[]{});
	}

	public List<Plataforma> listPlataforma(String[] campo, String[] valor) {
		
		try {
			String sql = " SELECT * from plataforma  ";
			String conector=" where ";
			for (int i=0;i<campo.length;i++)  {
				 sql+=conector+""+campo[i]+"='"+valor[i]+"'";
				 conector=" and ";
						 
		    }
			sql+=conector+"  estado=1  "+" order by idplataforma";

			List<Plataforma> plataformaFound =  getJdbcTemplate().query(
        			sql, new BeanPropertyRowMapper<Plataforma>(Plataforma.class));
         
			

        	return plataformaFound;
        	
    } catch (Exception e) {
            System.out.println(e.getMessage());
            e.printStackTrace();
    }
	return new ArrayList<Plataforma>();
	
		
		
	}

	public Plataforma getPlataforma(String idplataforma) {
		List<Plataforma> foundPlataforma=listPlataforma(new String[]{"idplataforma"},new String[]{idplataforma});
		if(foundPlataforma.size()>0)
			return foundPlataforma.get(0);
		return null;
	}

	public boolean delPlataforma(String idplataforma) {
		String sql="UPDATE plataforma set estado=0 where idplataforma='"+idplataforma+"' ";		
		getJdbcTemplate().update(sql);
		return true;
	}

	public boolean addPlataforma(final Plataforma plataforma) {
		try {
			
			final String sql = "INSERT INTO plataforma(nombre) values(?)";
			getJdbcTemplate().update(
					new PreparedStatementCreator()
			        {
			            public PreparedStatement createPreparedStatement(Connection conn) throws SQLException
			            {
			                PreparedStatement preparedStatement = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
			                preparedStatement.setString(1,plataforma.getNombre());
			                return preparedStatement;
			            }
			        }	
					);			
			   
                
                return true;
         
        } catch (Exception e) {
                System.out.println(e.getMessage());
                e.printStackTrace();
        }
		return false;
	}
	
	

}
